package main

import "fmt"

func main() {

	//var id [50]int // 数组的定义中, 数组个数一定要是个常量, 数组的下标可以是常量或变量

/*	for i := 0; i < len(id); i++ {
		id[i] = i + 1
		fmt.Printf("id[%d] = %d\n", i, id[i])
	}*/

	// 数组初始化(定义声明并赋值)
	var a [5]int = [5]int{1, 2, 3, 4, 5} // 全部初始化
	fmt.Println(a)

	b := [5]int{1, 2, 3, 4, 5}
	fmt.Println(b)

	c := [5]int{1, 2, 3} // 部分初始化
	fmt.Println(c)

	d := [5]int{2: 10, 4: 20} // 指定某个元素初始化
	fmt.Println(d)


	// 二维数组
	// 有多少个[]就是多少维, 有多少个[]就用多少个循环
	var a1 [3][4]int

	k := 0

	for i := 0; i < 3; i++ {
		for j := 0; j < 4; j++ {
			k++
			a1[i][j] = k
			fmt.Printf("a[%d][%d] = %d ", i, j, a1[i][j])
		}
		fmt.Printf("\n")
	}

	fmt.Println("a1 = ", a1)

	// 有3个元素, 每个元素又是一维数组[4]int
	b1 := [3][4]int{
		{1, 2, 3, 4},
		{5, 6, 7, 8},
		{9, 10, 11, 12},
	}

	fmt.Println("b1 = ", b1)

	// 部分初始化
	c1 := [3][4]int{
		{1, 2, 3, 4},
		{5, 6, 7, 8},
		{9, 10},
	}

	fmt.Println("c1 = ", c1)


	d1 := [3][4]int{
		{1, 2, 3, 4},
		{5, 6, 7, 8},
	}

	fmt.Println("d1 = ", d1)


	e1 := [3][4]int{ 1: {1, 2, 3, 4} }

	fmt.Println("e1 = ", e1)
}
